package cn.wangsy.zhidao.p20170314;

import java.awt.*;
import java.awt.event.*;

public class Calculator extends WindowAdapter {
	Panel p1 = new Panel();
	Panel p2 = new Panel();
	Panel p3 = new Panel();
	TextField txt;
	private Button[] b = new Button[17];
	private String ss[] = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2",
			"3", "*", "clear", "0", "=", "/", "close" };
	static double a;
	static String s, str;// 定义变量 创建对像

	public static void main(String args[]) {
		(new Calculator()).frame();
	}

	public void frame() {
		Frame fm = new Frame("简单计算器");
		for (int i = 0; i <= 16; i++) {
			b[i] = new Button(ss[i]);
		}
		for (int i = 0; i <= 15; i++) {
			p2.add(b[i]);
		} // 创建按钮 并添加到P2
		b[16].setBackground(Color.yellow);
		txt = new TextField(15);
		txt.setEditable(false);
		for (int i = 0; i <= 16; i++) {
			b[i].addActionListener(new buttonlistener());// 添加监听器
		}
		b[16].addActionListener(new close());
		fm.addWindowListener(this);
		fm.setBackground(Color.red);
		p1.setLayout(new BorderLayout());
		p1.add(txt, "North");
		p2.setLayout(new GridLayout(4, 4));
		p3.setLayout(new BorderLayout());
		p3.add(b[16]);
		fm.add(p1, "North");
		fm.add(p2, "Center");
		fm.add(p3, "South");
		fm.pack();
		fm.setVisible(true);// 都是些窗中设置 添加相关组件和监听器
	}

	public void windowClosing(WindowEvent e) {
		System.exit(0);// 退出系统
	}

	class buttonlistener implements ActionListener {// 编写监听器事件 通过按键得出给果
		public void actionPerformed(ActionEvent e) {
			Button btn = (Button) e.getSource();
			if (btn.getLabel() == "=") {
				jisuan();
				str = String.valueOf(a);
				txt.setText(str);
				s = "";
			} else if (btn.getLabel() == "+") {
				jisuan();
				txt.setText("");
				s = "+";
			} else if (btn.getLabel() == "-") {
				jisuan();
				txt.setText("");
				s = "-";
			} else if (btn.getLabel() == "/") {
				jisuan();
				txt.setText("");
				s = "/";
			} else if (btn.getLabel() == "*") {
				jisuan();
				txt.setText("");
				s = "*";
			} else {
				txt.setText(txt.getText() + btn.getLabel());
				if (btn.getLabel() == "clear")
					txt.setText("");
			}
		}

		public void jisuan() {// 编写具体计算方法
			if (s == "+")
				a += Double.parseDouble(txt.getText());
			else if (s == "-")
				a -= Double.parseDouble(txt.getText());
			else if (s == "*")
				a *= Double.parseDouble(txt.getText());
			else if (s == "/")
				a /= Double.parseDouble(txt.getText());
			else
				a = Double.parseDouble(txt.getText());
		}
	}
}

class close implements ActionListener {// 退出
	public void actionPerformed(ActionEvent e) {
		System.exit(0);
	}
}
